通过OpenTelemetry Java SDK查询流量的灰度标签

MSE 全链路灰度底层使用了 ARMS 的能力来进行流量标签的透传,本文介绍如何在上下文中获取流量当前的灰度标签。

引入依赖

pom.xml 中引入opentelemetry 的依赖。

<dependencies>
    <dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-api</artifactId>
    </dependency>
    <dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-sdk-trace</artifactId>
    </dependency>
    <dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-sdk</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-bom</artifactId>
      <version>1.23.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

代码

通过如下方式获取。

String tagValue = Baggage.current().getEntryValue("__microservice_tag__");
说明
  • tagValue 的格式为 JSON,内容为 [{"name":"gray","tag":"gray","priority":-1}],这里的 name = gray 表示当前上下文属于 gray 标的流量。

  • 此特性需要 MSE 探针版本 >= 4.0。